
package com.uccart_project;

import com.uccart_project.controller.Controller_Application;
import com.uccart_project.util.EntityManagerFactorySingleton;
import de.javasoft.plaf.synthetica.SyntheticaAluOxideLookAndFeel;

import java.awt.*;
import java.text.ParseException;
import javax.persistence.EntityManagerFactory;
import javax.swing.*;
 
public class UCCART_Project {

    /**
     *  Un objeto SplashScreen el cual permite cargar la imagen durante el arranque del programa. 
     */
    public static SplashScreen loadingScreen;
    
    /**
     * Metodo principal del programa, es el que ejecuta el programa.
     * @param args
     */
    public static void main(String[] args) {
        loadingMethod();
        mainMethod();
        if (loadingScreen != null) {
            loadingScreen.close();
        }
    }

    /**
     * Carga la imagen del Splash
     */
    public static void loadingMethod() {
        loadingScreen = SplashScreen.getSplashScreen(); 
    } 

    /**
     * Metodo principal, en el cual se crea la primera y unica instancia del EntityManagerFactory mediante
     * el singleton.
     */
    public static void mainMethod() { 
        EntityManagerFactory factory = EntityManagerFactorySingleton.getFactory(); 
        try {
            // set your theme  
            // start application
            UIManager.setLookAndFeel(new SyntheticaAluOxideLookAndFeel());
        } catch (ParseException | UnsupportedLookAndFeelException ex) {
            System.out.println(ex.toString());
        }
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Controller_Application().iniciar();
            }
        });
    }
}
